home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / LgcyPlus / disk2 / CYCLPUSH._ / CYCLPUSH.
Encoding:
Text File  |  2001-03-02  |  3.6 KB  |  91 lines

  1. 10    ! ***************************************************************
  2. 20    ! Example: Cyclical PUSHBUTTON
  3. 30    !
  4. 40    ! This example implements an object which cycles through its values
  5. 50    ! each time it is pushed. It uses a PUSHBUTTON widget. When the button
  6. 60    ! is pressed, the "LABEL" and "STATE" change. Any number of choices
  7. 70    ! could be used. This type of control, however, works best if the
  8. 80    ! number of choices is kept small.
  9. 90    !
  10. 100   ! ***************************************************************
  11. 110   !
  12. 120   INTEGER Tab_1,Tab_1_cols,Tab_2,Tab_2_cols,Width
  13. 130   INTEGER States,State,I
  14. 140   DIM Labels$(0:10)[10]
  15. 150   !
  16. 160   Tab_1=10
  17. 170   Tab_1_cols=25
  18. 180   Tab_2=Tab_1+(Tab_1_cols+1)*CHRX
  19. 190   Tab_2_cols=10
  20. 200   Width=Tab_2+(Tab_2_cols+3)*CHRX+Tab_1
  21. 210   States=5
  22. 220   !
  23. 230   ! Create labels for each state
  24. 240   !
  25. 250   FOR I=BASE(Labels$,1) TO BASE(Labels$,1)+SIZE(Labels$,1)-1
  26. 260     Labels$(I)="State "&VAL$(I)
  27. 270   NEXT I
  28. 280   !
  29. 290   ! Create widgets
  30. 300   !
  31. 310   ASSIGN @Panel TO WIDGET "PANEL";SET ("X":100,"Y":50,"WIDTH":Width,"HEIGHT":10*CHRY,"TITLE":" Example: Cyclical PUSHBUTTON")
  32. 320   CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
  33. 330   ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
  34. 340   !
  35. 350   ASSIGN @Cyclic_label TO WIDGET "LABEL";PARENT @Panel,SET ("X":10,"Y":Tab_1,"COLUMNS":Tab_1_cols,"BORDER":0)
  36. 360   CONTROL @Cyclic_label;SET ("VALUE":"Multi-state PUSHBUTTON: ","JUSTIFICATION":"RIGHT")
  37. 370   ASSIGN @Cyclic TO WIDGET "PUSHBUTTON";PARENT @Panel,SET ("X":Tab_2,"Y":10,"COLUMNS":Tab_2_cols)
  38. 380   CONTROL @Cyclic;SET ("STATES":States,"LABELS":Labels$(*),"PANEL DEFAULT":1)
  39. 390   !
  40. 400   ASSIGN @States_label TO WIDGET "LABEL";PARENT @Panel,SET ("X":Tab_1,"Y":3*CHRY,"COLUMNS":Tab_1_cols,"BORDER":0)
  41. 410   CONTROL @States_label;SET ("JUSTIFICATION":"RIGHT","VALUE":"Number of States (1-"&VAL$(SIZE(Labels$,1))&"): ")
  42. 420   ASSIGN @States TO WIDGET "NUMBER";PARENT @Panel,SET ("X":Tab_2,"Y":3*CHRY,"COLUMNS":Tab_2_cols)
  43. 430   CONTROL @States;SET ("FORMAT":"SHORT INTEGER","MINIMUM":1,"MAXIMUM":SIZE(Labels$,1),"VALUE":States)
  44. 440   !
  45. 450   ASSIGN @State_label TO WIDGET "LABEL";PARENT @Panel,SET ("X":Tab_1,"Y":5*CHRY,"COLUMNS":Tab_1_cols,"BORDER":0)
  46. 460   CONTROL @State_label;SET ("JUSTIFICATION":"RIGHT","VALUE":"Current State: ")
  47. 470   ASSIGN @State TO WIDGET "NUMBER";PARENT @Panel,SET ("X":Tab_2,"Y":5*CHRY,"COLUMNS":Tab_2_cols)
  48. 480   CONTROL @State;SET ("FORMAT":"SHORT INTEGER","MINIMUM":0,"MAXIMUM":States-1,"VALUE":0)
  49. 490   !
  50. 500   ! Define events
  51. 510   !
  52. 520   ON EVENT @Cyclic,"ACTIVATED",1 GOSUB Disp_state
  53. 530   ON EVENT @States,"RETURN" GOSUB Set_states
  54. 540   ON EVENT @States,"DONE" GOSUB Reset_states
  55. 550   ON EVENT @State,"RETURN" GOSUB Set_state
  56. 560   ON EVENT @State,"DONE" GOSUB Reset_state
  57. 570   !
  58. 580   LOOP
  59. 590     WAIT FOR EVENT
  60. 600   END LOOP
  61. 610   !
  62. 620   ! Event branches
  63. 630   !
  64. 640 Set_states: !
  65. 650   STATUS @States;RETURN ("VALUE":States)
  66. 660   CONTROL @State;SET ("MAXIMUM":States-1)
  67. 670   CONTROL @Cyclic;SET ("STATES":States)
  68. 680   RETURN
  69. 690   !
  70. 700 Reset_states: !
  71. 710   STATUS @Cyclic;RETURN ("STATES":States)
  72. 720   CONTROL @States;SET ("VALUE":States)
  73. 730   RETURN
  74. 740   !
  75. 750 Set_state:   !
  76. 760   STATUS @State;RETURN ("VALUE":State)
  77. 770   CONTROL @Cyclic;SET ("STATE":State)
  78. 780   RETURN
  79. 790   !
  80. 800 Reset_state: !
  81. 810   STATUS @Cyclic;RETURN ("STATE":State)
  82. 820   CONTROL @State;SET ("VALUE":State)
  83. 830   RETURN
  84. 840   !
  85. 850 Disp_state: !
  86. 860   STATUS @Cyclic;RETURN ("STATE":State)
  87. 870   CONTROL @State;SET ("VALUE":State)
  88. 880   RETURN
  89. 890   !
  90. 900 Finis: END
  91.